Passed
Push — feature/full-redesign ( 3b8120...976392 )
by Kevin Van
04:11
created

MatchesSlider.tsx ➔ getData   A

Complexity

Conditions 1

Size

Total Lines 4
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 4
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
1
import axios from "axios"
2
import { graphql, useStaticQuery } from "gatsby"
3
import React, { Fragment, FunctionComponent, useState } from "react"
4
import { useEffect } from "react"
5
import Slider, { LazyLoadTypes } from "react-slick"
6
7
import { Match, MatchesQueryData } from "../Types/Match"
8
import { MatchTeaserDetail } from "./MatchTeaser"
9
import "./MatchesSlider.scss"
10
import { Spinner } from "./Spinner"
11
12
const MatchesSlider: FunctionComponent = () => {
13
  const [data, setData] = useState<Match[]>([])
14
  const [loading, setLoading] = useState<boolean>(true)
15
16
  const {
17
    site: {
18
      siteMetadata: { kcvvPsdApi },
19
    },
20
  }: MatchesQueryData = useStaticQuery(graphql`
21
    {
22
      site {
23
        siteMetadata {
24
          kcvvPsdApi
25
        }
26
      }
27
    }
28
  `)
29
30
  const settings_slickslider = {
31
    slidesToShow: 4,
32
    slidesToScroll: 1,
33
    dots: false,
34
    arrows: true,
35
    centerMode: true,
36
    focusOnSelect: true,
37
    infinite: true,
38
    lazyLoad: `progressive` as LazyLoadTypes,
39
40
    responsive: [
41
      {
42
        breakpoint: 1700,
43
        settings: {
44
          slidesToShow: 4,
45
        },
46
      },
47
      {
48
        breakpoint: 1400,
49
        settings: {
50
          slidesToShow: 3,
51
        },
52
      },
53
      {
54
        breakpoint: 1200,
55
        settings: {
56
          slidesToShow: 2,
57
        },
58
      },
59
      {
60
        breakpoint: 800,
61
        settings: {
62
          slidesToShow: 1,
63
        },
64
      },
65
    ],
66
  }
67
68
  useEffect(() => {
69
    async function getData() {
70
      const response = await axios.get(`${kcvvPsdApi}/matches/next`)
71
      setData(response.data)
72
      setLoading(false)
73
    }
74
    getData()
75
  }, [kcvvPsdApi])
76
77
  return (
78
    <Fragment>
79
      {data.length > 0 || loading === false || (
80
        <div className="matches_slider__wrapper">
81
          <Spinner />
82
        </div>
83
      )}
84
      {data.length > 0 && (
85
        <div className="matches_slider__wrapper">
86
          <Slider className={`matches_slider`} {...settings_slickslider}>
87
            {data
88
              .sort((a, b) => a.timestamp - b.timestamp)
89
              .map((match: Match, i) => {
90
                return (
91
                  // <div className="matches_slider__item" key={i} data-equalizer-watch="true">
92
                  <MatchTeaserDetail match={match} key={i} />
93
                  // </div>
94
                )
95
              })}
96
          </Slider>
97
        </div>
98
      )}
99
    </Fragment>
100
  )
101
}
102
103
export default MatchesSlider
104